Ejemplo de árbol de clasificación (Titanic)

Árboles de regresión

Los árboles de regresión son un método de analitica de datos y se usan cuando queremos predecir el valor de una variable numerica.

  1. Primero se divide el espacio cada predictor \(X_1,X_2,...X_p\) en \(J\) regiones distintas y no superpuestas entre ellas \(R_1,R_2,...,R_J\).

  2. Para las observaciones que caigan en la misma región \(R_j\) tomaremos el mismo valor de respuesta que por simplicidad es el promedio de todas las observaciones que caigan en esta región.

La construcción de las regiones se hace seleccionando cajas(rectángulos) tales que minimicen el RSS.

\[RSS = \sum _{j=1}^J \sum_{i \in R_j}(y_i-\hat{y}_{R_j})^2\]

  • \(\hat{y}_{R_j}\) es la respuesta media para las observaciones que caen en la \(j-ésima\) caja.

El proceso para la construcción de la regiones anteriores puede ser bastante costoso computacionalmente por lo que para la construcción del árbol utilizamos una técnica llamado división binaria recursiva. Se llama de este modo porque comienza en la parte superior del árbol con una sola variable y luego se va partiendo hacia abajo formando nuevas divisiones a partir de otras variables.

El método consiste en lo siguiente:

Seleccionamos el predictor \(X_j\) y un punto de corte \(s\) con el cual partimos el espacio del predictor entre las regiones \(\{ X|X_j< s\}\) y \(\{ X|X_j\geq s\}\) de forma que se tenga el RSS más bajo.

Con el método anterior se forman solo dos posibles regiones para cada predictor \(X_j\) seleccionado.

\[R_1(j,s)=\{ X|X_j< s\} \ \ \ y \ \ \ R_2(j,s)=\{ X|X_j\geq s\}\] Y ademas se busca el valor de \(j\) y \(s\) que minimizan la ecuación

\[ \sum_{i:x_i \in R_1(j,s)}(y_i-\hat{y}_{R_1})^2 \ + \ \sum_{i:x_i \in R_2(j,s)}(y_i-\hat{y}_{R_2})^2\]

Poda de los árboles

El proceso anterior es bastante bueno a la hora de explicar las variaciones en un conjunto de entrenamiento pero puede fallar a la hora de realizar nuevas predicciones porque en ocasiones se llegan a formar tantas divisiones que el modelo de sobre ajusta a los datos. Pero este problema puede ser solucionado construyendo un sub-árbol el cual puede minimizar la varianza y simplificar la interpretación admitiendo un pequeño sesgo.

Para encontrar el sub-árbol apropiado consideramos una secuencia de árboles indexados por un parámetro de ajuste no negativo \(\alpha\).

En otras palabras sea \(T_0\) el árbol completo, debemos encontrar un sub-árbol \(T\subset T _0\) el cual permita minimizar la siguiente fórmula.

\[RSS = \sum _{m=1}^{|T|} \sum_{i:x_i \in R_m}(y_i-\hat{y}_{R_m})^2+\alpha |T|\]

  • \(|T|\) corresponde al número de nodos terminales del sub-árbol.
  • \(R_m\) es el rectangulo corresponde al \(m-esimo\) nodos terminal.

El parámetro de ajuste \(\alpha\) controla una compensación entre los componentes del sub-árbol y su ajuste a los datos de entrenamiento. Cuando \(\alpha = 0\), entonces el subárbol \(T\) simplemente será igual a \(T_0\), Sin embargo, a medida que aumenta \(\alpha\), hay un precio que pagar por tener un árbol con muchos nodos terminales, por lo que la cantidad tenderá a minimizarse para un subárbol más pequeño. Podemos seleccionar un valor de \(\alpha\) utilizando un conjunto de validación o utilizando validación cruzada. Luego volvemos a la conjunto completo de datos y obtenemos el sub-árbol correspondiente a \(\alpha\).

Implemenatción en R

## Warning: package 'tree' was built under R version 3.5.2
## Warning: package 'kableExtra' was built under R version 3.5.2
CEC velocidad tiempo carga Mezclas
117.61 3579.30 0.122 0 Diesel
135.37 3622.33 0.106 1 Diesel
144.93 3599.66 0.087 2 Diesel
152.65 3623.44 0.094 3 Diesel
154.29 3624.66 0.093 4 Diesel
112.76 3528.50 0.126 0 Biodiesel
## 
## Regression tree:
## tree(formula = CEC ~ ., data = base)
## Variables actually used in tree construction:
## [1] "tiempo"  "Mezclas"
## Number of terminal nodes:  7 
## Residual mean deviance:  35.26 = 2222 / 63 
## Distribution of residuals:
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -16.6700  -2.3680   0.3982   0.0000   2.1850  21.3800


Poda del arbol

## $size
## [1] 7 6 5 4 3 2 1
## 
## $dev
## [1]  5051.464  5084.274  5909.136  5460.564  7042.454 11668.084 37695.427
## 
## $k
## [1]       -Inf   406.0552   639.2566   662.1616  2639.5432  5167.0823
## [7] 25032.5779
## 
## $method
## [1] "deviance"
## 
## attr(,"class")
## [1] "prune"         "tree.sequence"

En la información anterior encontramos el número de nodos y la desviación del error de validación cruzada para cada número específico de nodos.

En el gráfico anterior se observa la varianza del error para la validación cruzada, se busca que esta sea lo más baja posible. El criterio para seleccionar el número de nodos óptimo es el tomar el nodo anterior a el cual en el que se observe un aumento en la varianza.


A continuación se presenta el metodo para realizar un validación cruzada loocv sobre el modelo anterior

## Warning: package 'DMwR' was built under R version 3.5.2
## 
##  LOOCV experiment with verbose =  FALSE  and seed = 1234 
## Iteration: **********************************************************************
## 
## == Summary of a Leave One Out Cross Validation  Experiment ==
## 
##  LOOCV experiment with verbose =  FALSE  and seed = 1234 
## 
## * Data set ::  base
## * Learner  ::  user.rpart  with parameters:
## 
## * Summary of Experiment Results:
##                70
## avg     137.56547
## std      22.44596
## min     100.86833
## max     176.98200
## invalid   0.00000

Árboles de clasificación

Este método es bastante similar al de los árboles de regresión. Su diferencia radica en que su variable de respuesta es una categoría.

La forma de crear las particiones es bastante similar a la de árboles de regresión usando tambien división binaria recursiva. En este caso no nos intentara minimizar en RSS si no la tasa de error de clasificación, este error esta dado por:

\[E=1- max_k(\hat{p}_{mk})\]

  • \({p}_{mk}\) representa la proporción observaciones de entrenamiento en el \(m-ésima\) región que son de la clase \(k\).

Sin embargo la tasa de error data anteriormente no es lo suficientemente sensitivo, por lo que se utilizan las siguientes medidas.

  • El indice de Gini definido por:

\[G=\sum _{k=1}^k \hat{p}_{mk}(1-\hat{p}_{mk}),\]

La anterior es una medida de la varianza cruzada de las k clases o llamada también medida de la impureza del modelo. Un valor pequeño indica que un nodo contiene predominantemente observaciones de la misma clase.

  • Entropia definida por:

\[D = - \sum_{k=1}^k \hat{p}_{mk} \ log \ \hat{p}_{mk}\]

Desde \(0\leq \hat{p}_{mk}\leq1\) por lo que \(0 \leq -\hat{p}_{mk} \ log \ \hat{p}_{mk}\)

Implementación en R

variance skew curtosis entropy class
3.62160 8.6661 -2.8073 -0.44699 0
4.54590 8.1674 -2.4586 -1.46210 0
3.86600 -2.6383 1.9242 0.10645 0
3.45660 9.5228 -4.0112 -3.59440 0
0.32924 -4.4552 4.5718 -0.98880 0
4.36840 9.6718 -3.9606 -3.16250 0
## 
## Classification tree:
## tree(formula = class ~ ., data = base)
## Number of terminal nodes:  11 
## Residual mean deviance:  0.1022 = 139.1 / 1361 
## Misclassification error rate: 0.01166 = 16 / 1372

La varianza reportada esta dada por la expresión

\[-2\sum_m\sum_kn_{mk} \ log \ \hat{p}_{mk}\]

## $size
## [1] 11 10  8  6  4  3  2  1
## 
## $dev
## [1]  32  31  44  68 127 160 179 610
## 
## $k
## [1]  -Inf   1.0   7.0  11.5  25.5  38.0  58.0 409.0
## 
## $method
## [1] "misclass"
## 
## attr(,"class")
## [1] "prune"         "tree.sequence"

Desventajas

  • Desafortunadamente, los árboles generalmente no tienen el mismo nivel de predicción que las demás técnicas de predicción.

  • Los árboles pueden ser muy poco robustos. En otras palabras, una pequeño cambio en los datos puede causar un gran cambio en la estimación final. árbol.

Aplicaciones.

Detección de fraudes

Una aplicación comercial ampliamente utilizada es la detección de estados financieros fraudulentos (FFS).

Kirkos y col. (2007) han creado un modelo de árbol de decisión para identificar y detectar FFS. En su estudio, se seleccionaron 76 empresas manufactureras griegas y se recopilaron sus estados financieros publicados, incluidos los balances y los estados de resultados, con fines de modelación. El modelo de árbol creado muestra que todos los casos sin fraude y el 92% de los casos de fraude se han clasificado correctamente. Tal hallazgo indica que los árboles de decisión pueden hacer una contribución significativa para la detección de FFS debido a una tasa altamente precisa.

Consumo de energía

La investigación del consumo de energía se convierte en un tema importante ya que ayuda a las empresas de servicios públicos a identificar la cantidad de energía necesaria.

Los árboles de decisión son los preferidos. Esto se debe al hecho de que una estructura jerárquica proporcionada por los árboles de decisión es útil para presentar el nivel profundo de información y conocimiento. Tso y Yau (2007) crean un modelo de árbol de decisión para identificar las relaciones entre un hogar y sus consumos de electricidad. Los resultados de su modelo de árbol ilustran que la cantidad de miembros del hogar es el factor más determinante del consumo de energía en verano, y tanto la cantidad de aire acondicionado como el tamaño de un piso son los segundos factores más importantes.

Otros casos

Existen muchos otros casos de exito en la aplicacion de arboles de desicion como lo son:

Predecir fechas de alta ocupación para hoteles, Calificación crediticia, riesgo de delito, diagnóstico médico, predicción de fallas.

Referencias

  • An introduction to statistical learning with R.